package chwgigs.swing.outline;

import java.awt.BorderLayout;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

// <JOptionPane>          
// 다양한 용도에 사용 할 수 있도록 
// 미리 정의된 대화 상자를 의미

// 메세지 표시             : showMessageDialog
// 사용자의 확인을 물음 : showConfirmDialog
// 사용자의 입력을 받음 : showInputDialog
// 위 세가지 모두 함     : showOptionDialog

// JOptionPane 은 static 메서드를 가지고 있다. 
// 따라서 객체 생성없이 바로 호출해서 사용가능하다. 
// JFrame 에 종속 / 비종속적 대화상자를 작성 가능
// 대화상자에는 바로 사용 가능한 4가지 아이콘을 기본적으로 제공한다. 

// ShowMessageDialog
// 간단한 메세지를 출력
// showMessageDialog (부모 프레임 메세지 제목 종류)
// 메세지 종류는 다음과 같다 
// JOptionPane.ERROR_MESSAGE
// JOptionPane.INFORMATION_MESSAGE
// JOptionPane.WARNING_MESSAGE
// JOptionPane.QUESTION_MESSAGE
// JOptionPane.PLAIN_MESSAGE

// ShowConfirmDialog
// 사용자의 확인을 물을 수 있다 
// 이 대화상자에서는 yes, no, cancel,ok 버튼 등을 표시 
// JOptionPane.YES_OPTION
// JOptionPane.NO_OPTION
// JOptionPane.CANCEL_OPTION
// JOptionPane.OK_OPTION
// JOptionPane.CLOSED_OPTION
// CLOSED_OPTION 은 대화상자의 X 단추를 클릭했을때 반환되는 정수 값이다. 

// ShowInputDialog
// 사용자로 부터 입력을 받게 하는 대화상자를 표시 
// 값을 입력하고 OK를 누르면 : 입력값 전달 
// 값을 입력하고 CANCEL을 누르면:  NULL값 전달 
// 값을 입력하고 OK를 누르면:  공백값 전달


public class J20_BasicComponent extends JFrame {

	private JPanel contentPane;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					J20_BasicComponent frame = new J20_BasicComponent();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public J20_BasicComponent() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);

		JButton btnNewButton = new JButton("showMessage");
		contentPane.add(btnNewButton, BorderLayout.NORTH);
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {

				JOptionPane.showMessageDialog(null, "질문 대화상자", "showMessage",
						JOptionPane.QUESTION_MESSAGE);

				JOptionPane.showMessageDialog(null, "오류 대화상자", "showMessage",
						JOptionPane.WARNING_MESSAGE);

				JOptionPane.showMessageDialog(null, "단순 대화상자", "showMessage",
						JOptionPane.PLAIN_MESSAGE);

			}
		});

		JButton btnNewButton_1 = new JButton("New button");
		contentPane.add(btnNewButton_1, BorderLayout.WEST);

		JButton btnNewButton_2 = new JButton("New button");
		contentPane.add(btnNewButton_2, BorderLayout.EAST);

		JButton btnNewButton_3 = new JButton("confirm message");
		btnNewButton_3.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {

				JOptionPane.showConfirmDialog(null, "계속하시겠어요", "확인하세요",
						JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
				int result = JOptionPane.showConfirmDialog(null, "라면 먹고 갈래요?",
						"확인하세요", JOptionPane.YES_NO_CANCEL_OPTION,
						JOptionPane.WARNING_MESSAGE);
				if (result == JOptionPane.YES_OPTION)
					JOptionPane.showMessageDialog(null, "그럼 뭐 먹을래요?");
				else if (result == JOptionPane.YES_OPTION)
					JOptionPane.showMessageDialog(null, "니가 가라 하와이");
				else if (result == JOptionPane.YES_OPTION)
					JOptionPane.showMessageDialog(null, "다 됐나요");
			}
		});
		contentPane.add(btnNewButton_3, BorderLayout.CENTER);

		JButton btnNewButton_4 = new JButton("input message");
		btnNewButton_4.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String name = JOptionPane.showInputDialog(
				JOptionPane.showConfirmDialog(null, "당신의 이빨을 입력하세요", "입력하세요",
						JOptionPane.INFORMATION_MESSAGE));
				System.out.println(name);
			}
		});
		contentPane.add(btnNewButton_4, BorderLayout.SOUTH);
	}
}
